<template>
  <el-dialog :title="!dataForm.id ? '新增' : '修改'" :close-on-click-modal="false" :visible.sync="visible">
    <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()" label-width="150px">
      <el-form-item label="会员折扣" prop="discount">
        <el-input @input="limitInput($event,'discount')" v-model="dataForm.discount" type="number"></el-input>
      </el-form-item>
      <el-form-item label="输出的等级名称" prop="outer_role_name">
        <el-input v-model="dataForm.outer_role_name" maxlength="10"></el-input>
      </el-form-item>
      <el-form-item label="升级消费金额" prop="threshold" v-if="hiddenInput">
        <el-input v-model="dataForm.threshold" maxlength="7" type="number" @input="limitInputs($event,'threshold')"></el-input>
      </el-form-item>
      <el-form-item label="升级推荐人数" prop="upgrade_num" v-if="hiddenInput&&roleType==2">
        <el-input v-model="dataForm.upgrade_num" maxlength="7" type="number"></el-input>
      </el-form-item>
    </el-form>
    <span slot="footer" class="dialog-footer">
      <el-button @click="visible = false">取 消</el-button>
      <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
    </span>
  </el-dialog>
</template>

<script>
import { treeDataTranslate } from '@/utils'
import seviceApi from '@/api/serviceApi.js'
export default {
  components: {

  },
  data () {
    return {
      visible: false,
      dialogVisible: false,
      hiddenInput: true,
      dataForm: {
        id: '0',
        discount: '', // 会员折扣
        outer_role_name: '', // 输出的等级名称
        threshold: '', // 消费的阈值
        upgrade_num: ''// 升级推荐人数
      },
      dataRule: {
        discount: [
          { required: true, message: '会员折扣不能为空', trigger: 'blur' }
        ],
        outer_role_name: [
          { required: true, message: '输出的等级名称不能为空', trigger: 'blur' }
        ],
        threshold: [
          { required: true, message: '消费的阈值不能为空', trigger: 'blur' }
        ],
        upgrade_num: [
          { required: true, message: '升级推荐人数不能为空', trigger: 'blur' }
        ]
      }
    }
  },
  computed: {
    roleType: {
      get () { return this.$store.state.user.roleType }
    }
  },
  methods: {
    init (id, level) {
      this.dataForm.id = id || 0
      this.visible = true
      this.$nextTick(() => {
        this.$refs['dataForm'].resetFields()
      })

      if (level == 4) {
        this.hiddenInput = false
      } else {
        this.hiddenInput = true
      }
      if (id) {
        seviceApi.getShopUserRoleConfigInfo(id).then(res => {
          if (res && res.data.code == 200) {
            this.dataForm.discount = res.data.data.discount
            this.dataForm.outer_role_name = res.data.data.outer_role_name
            this.dataForm.threshold = res.data.data.threshold
            this.dataForm.upgrade_num = res.data.data.upgrade_num
          }
        })
      }
    },
    limitInput (value, name) {
      this.dataForm[name] =
        ('' + value) // 第一步：转成字符串
          .replace(/[^\d^\.]+/g, '') // 第二步：把不是数字，不是小数点的过滤掉
          .replace(/^0+(\d)/, '$1') // 第三步：第一位0开头，0后面为数字，则过滤掉，取后面的数字
          .replace(/^\./, '0.') // 第四步：如果输入的第一位为小数点，则替换成 0. 实现自动补全
          .match(/^\d*(\.?\d{0,1})/g)[0] || '' // 第五步：最终匹配得到结果 以数字开头，只有一个小数点，而且小数点后面只能有0到2位小数
    },
    limitInputs (value, name) {
      this.dataForm[name] =
        ('' + value) // 第一步：转成字符串
          .replace(/[^\d^\.]+/g, '') // 第二步：把不是数字，不是小数点的过滤掉
          .replace(/^0+(\d)/, '$1') // 第三步：第一位0开头，0后面为数字，则过滤掉，取后面的数字
          .replace(/^\./, '0.') // 第四步：如果输入的第一位为小数点，则替换成 0. 实现自动补全
          .match(/^\d*(\.?\d{0,2})/g)[0] || '' // 第五步：最终匹配得到结果 以数字开头，只有一个小数点，而且小数点后面只能有0到2位小数
    },
    // 提交
    dataFormSubmit () {
      this.$refs['dataForm'].validate((valid) => {
        if (valid) {
          seviceApi.updateShopUserRoleConfig(this.dataForm).then(res => {
            if (res && res.data.code == 200) {
              this.$message({
                showClose: true,
                message: '修改成功',
                type: 'success'
              })
              this.visible = false
              this.$emit('updataList', 1)
            }
          })
        }
      })
    }
  }
}
</script>

<style lang="scss">
</style>
